package photoEffects
{
	import flash.display.Bitmap;
	import flash.events.EventDispatcher;
	
	import mx.collections.ArrayCollection;
	
	/**
	 * This is a abstract class that other PhotoEffect Class based on.
	 */
	public class PhotoEffect extends EventDispatcher
	{
		public function PhotoEffect():void{
			
		}
		
		public static const NAME:String = "PhotoEffect";
		
		public function get mask():Bitmap {
			return _mask;
		}
		public function set mask(mask:Bitmap):void {
			_mask = mask;
		}
		
		public function get blendMode():String {
			return _blendMode;
		}
		public function set blendMode(blendMode:String):void{
			_blendMode = blendMode;
		}
		
		public function get alpha():Number {
			return _alpha;
		}
		public function set alpha(alpha:Number):void{
			_alpha = alpha;
		}
		
		/**
		 * Apply the effect on a bitmap. The resulting bitmap can be get by getResult().
		 * A ProcessEvent.COMPLETE will be sent when the apply is completed.
		 */
		public function applyOn(bitmap:Bitmap, callBack:Function = null):void {
			
		}
		
		/**
		 * Get the resulting bitmap. Return null if no result is available.
		 */
		public function getResult():Bitmap {
			return _resultBitmap;
		}

		
		protected var _mask:Bitmap;
		protected var _blendMode:String;
		protected var _alpha:Number;
		protected var _dispatcher:EventDispatcher;
		protected var _workingBitmap:Bitmap;
		protected var _resultBitmap:Bitmap;
	}
}